home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib07.dsk / DATA ENTRY FORMATTER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  67 lines

  1. 1  REM  *****************************
  2. 2  REM  *  DATA ENTRY FORMATTER     *
  3. 3  REM  *   BY CHARLES G. BOODY     *
  4. 4  REM  *   APPLESOFT BASIC         *
  5. 5  REM  *   COPYRIGHT (C) 1981      *
  6. 6  REM  *   BY MICRO-SPARC INC      *
  7. 7  REM  *****************************
  8. 10  GOTO 1000
  9. 100  IF  LEN(Z$) <3  THEN  POP : PRINT B$: GOTO 104
  10. 101  IF  MID$ (Z$, LEN(Z$) -2,1) < >"."  THEN  POP : PRINT B$: GOTO 104
  11. 102  RETURN 
  12. 103  HTAB  ABS(H%): VTAB V%: INVERSE : PRINT A$; TAB(  ABS(P%) -1);: NORMAL : PRINT " "; CHR$(91);: HTAB  ABS(P%) +1 + ABS(LN%): PRINT  CHR$(93);: RETURN 
  13. 104  VTAB V%: HTAB  ABS(P%) +1: FOR I = 1 TO  ABS(LN%): PRINT  CHR$(95);: NEXT I: VTAB V%: HTAB  ABS(P%) +1:Z$ = "":I = 0
  14. 105  IF I = 1  THEN  PRINT B$;:I = 0
  15. 106  GET X$:I = 1 +1 *( ASC(X$) = 13) +2 *( ASC(X$) = 8) +3 *(( ASC(X$) >31)  AND (LN% >0)) +3 *(( ASC(X$) >44)  AND ( ASC(X$) <58)  AND (LN% <0)) +4 *( ASC(X$) = 27) +5 *(SW < >0  AND X$ =  CHR$(16)): ON I GOTO 105,111,107,109,115,128
  16. 107  IF  LEN(Z$) <2  THEN Z$ = "": GOTO 104
  17. 108 Z$ =  LEFT$(Z$,( LEN(Z$) -1)): HTAB ( PEEK(36) +40 *( PEEK(36) = 0)): VTAB ( PEEK(37) +1 *( PEEK(36) < >39)): PRINT  CHR$(95);: HTAB ( PEEK(36) +40 *( PEEK(36) = 0)): VTAB ( PEEK(37) +1 *( PEEK(36) < >39)): GOTO 105
  18. 109  IF  LEN(Z$) +1 > ABS(LN%)  THEN  PRINT B$: GOTO 104
  19. 110  PRINT X$;:Z$ = Z$ +X$: GOTO 105
  20. 111  IF (( LEN(Z$) <MN%)  OR ( LEN(Z$) >0  AND  LEN(Z$) < ABS(MN%)  AND MN% <0))  THEN  PRINT B$: GOTO 104
  21. 112  IF H% <0  THEN  GOSUB 100
  22. 113  GOSUB 114: VTAB V%: HTAB  ABS(P%): PRINT  CHR$(91);: NORMAL : HTAB  ABS(P% +1) +(2 + ABS(LN%) - LEN(Z$)) *(P% <1): PRINT Z$: RETURN 
  23. 114  HTAB  ABS(P%) +1: VTAB V%: FOR I = 1 TO  ABS(LN%): PRINT " ";: NEXT I: RETURN 
  24. 115 Z$ = X$: RETURN 
  25. 116  RESTORE :Z$ = "": READ NN:J = II: IF II < >1  THEN  FOR J = 1 TO II -1: READ A$,H%,V%,LN%,MN%,P%: NEXT 
  26. 117  READ A$,H%,V%,LN%,MN%,P%: HTAB  ABS(P%) +1: VTAB  ABS(V%): RETURN 
  27. 118 II = 1
  28. 119  VTAB 24: HTAB 1: INVERSE : PRINT "CHANGES: CTRL<P>-NEXT ITEM, ESC-TO STOP";: NORMAL 
  29. 120  GOSUB 116:A$ = IT$(II): GOSUB 106: IF Z$ =  CHR$(16)  THEN II = II +1:II = II *(II < = NN) +1 *(II >NN): GOTO 120
  30. 121  IF Z$ < > CHR$(27)  THEN IT$(II) = Z$:II = (II +1) *(II <NN) +1 *(II = NN): GOTO 120
  31. 122  RETURN 
  32. 123  HOME : GOSUB 124: RESTORE : READ NN: FOR J = 1 TO NN: READ A$,H%,V%,LN%,MN%,P%: GOSUB 103: NEXT J: RETURN 
  33. 124  HOME : HTAB 9: PRINT "DUMMY INVENTORY SCREEN": FOR I = 1 TO 40: PRINT "=";: NEXT : RETURN 
  34. 125  HTAB 1: VTAB 24: CALL  -958: INVERSE : PRINT "MORE (Y/N)?";: GET A$: NORMAL : IF A$ < >"Y"  AND A$ < >"N"  THEN 125
  35. 126  RETURN 
  36. 127  RESTORE : READ NN: FOR I = 1 TO NN: READ A$,H%,V%,LN%,MN%,P%: VTAB  ABS(V%): HTAB ( ABS(P%) +1): FOR J = 1 TO  ABS(LN%): PRINT " ";: NEXT J,I: RETURN 
  37. 128 Z$ = A$: GOTO 113
  38. 500  REM  *****A DEMO USING ROUTINES TO ENTER DATA
  39. 505  RESTORE :SW = 0: READ NN: REM  **GET THE NUMBER OF ITEMS
  40. 510  HOME : GOSUB 124: FOR J = 1 TO NN: READ A$,H%,V%,LN%,MN%,P%: GOSUB 103: GOSUB 104: IF Z$ =  CHR$(27)  THEN 525
  41. 515 IT$(J) = Z$: NEXT 
  42. 520 SW = 4: GOSUB 118: REM  THE CHECK ROUTINE
  43. 525  GOSUB 125: IF A$ = "Y"  THEN 505
  44. 530 SW = 0: GOTO 1005
  45. 600  GOSUB 123: HTAB 1: VTAB 23: INVERSE : PRINT "PRESS A KEY FOR MENU";: NORMAL : GET A$: PRINT : GOTO 1005
  46. 700  GOSUB 123
  47. 705 SW = 0: RESTORE : READ NN: FOR J = 1 TO NN: READ A$,H%,V%,LN%,MN%,P%: GOSUB 104: IF Z$ =  CHR$(27)  THEN 1005
  48. 710 IT$(J) = Z$: NEXT :SW = 4: GOSUB 118
  49. 715  GOSUB 125: IF A$ = "Y"  THEN  GOSUB 127: GOTO 705:
  50. 720 SW = 0: GOTO 1005
  51. 800  REM  THESE NEXT STATEMENTS ARE DUMMY DATA FOR THE CORRECTION ROUTINES--IN A PROGRAM YOU WOULD HAVE GOTTEN YOUR DATA FROM A FILE SOMEWHERE
  52. 805 IT$(1) = "13/32/08":IT$(2) = "443444":IT$(3) = "FLITTED PART":IT$(4) = "99.99":IT$(5) = "10":IT$(6) = "10":IT$(7) = "ACME ADTO PARTS":IT$(8) = "MSS. ACME"
  53. 810 IT$(9) = "KNEW PARTS DIVISION":IT$(10) = "123 PARTS PLACE":IT$(11) = "DETROIT":IT$(12) = "IM":IT$(13) = "44355":IT$(14) = "123-123-123":IT$(15) = "PLEASE FIX ME!!!"
  54. 815  HOME : GOSUB 123
  55. 820  RESTORE : READ NN: FOR J = 1 TO NN: READ A$,H%,V%,LN%,MN%,P%:Z$ = IT$(J): GOSUB 113: NEXT 
  56. 825  REM  ******THIS IS THE CORRECTION SECTION
  57. 830 SW = 4: GOSUB 118
  58. 835  GOSUB 125: IF A$ = "Y"  THEN  GOSUB 127: GOTO 820
  59. 840 SW = 0: GOTO 1005
  60. 900  HOME : NORMAL : PRINT "BYE!": END 
  61. 1000 B$ =  CHR$(7): DIM IT$(30): REM  B$ IS BELL PROMPT, IT$ IS MY DUMMY FOR YOUR DATA COLLECTION VARIABLE
  62. 1005  TEXT : HOME : PRINT "DEMO SCREEN SUBROUTINES.  ENTER:": PRINT 
  63. 1010  HTAB 5: PRINT "1 TO DO LINE BY LINE ENTRY": PRINT : HTAB 5: PRINT "2 TO SEE 'EMPTY' SCREEN": PRINT : HTAB 5: PRINT "3 TO DO 'FULL SCREEN' ENTRY": PRINT : HTAB 5: PRINT "4 TO 'VIEW-CHANGE' DATA": PRINT : HTAB 5: PRINT "5 TO QUIT"
  64. 1015  HTAB 1: VTAB 23: INVERSE : PRINT "WHICH?";: GET A$: NORMAL :JB =  VAL(A$): IF JB <1  OR JB >5  THEN  PRINT B$;: GOTO 1015
  65. 1020  ON JB GOTO 500,600,700,800,900
  66. 1025  DATA  15,DATE(MM/DD/YR),1,3,-8,8,18,ITEM#,1,5,-6,6,-11,DESC.,1,6,18,1,11,BUY.PRICE,-1,7,-9,3,-11,#ON.HAND,1,8,-4,1,-11,LOWEST.LIMIT,20,8,-4,1,-34,COMPANY,1,12,20,1,10,ATTN,1,13,20,0,10,ADDRESS1,1,14,25,0,10,ADDRESS2,1,15,25,0,10
  67. 1030  DATA  CITY,1,16,15,2,10,STATE,1,17,2,2,10,ZIP,20,17,-5,5,-24,PHONE,1,19,-12,8,-10,COMMENT,1,20,68,0,10